package controllers;

import java.util.Set;

import models.ExercicioPadraoTreino;
import models.PadraoTreino;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import play.mvc.Security;
import dao.DAOExercicio;
import dao.DAOPadraoTreino;

@Security.Authenticated(Seguranca.class)
public class PadraoTreinoControle extends Controller {

	private static Form<PadraoTreino> formPadraoTreino = new Form<PadraoTreino>(PadraoTreino.class);
	  
    public static Result index() {
        return ok(views.html.padraoTreino.index.render(""));
    }
	
	public static Result cadastrarView(){
		DAOExercicio dao = new DAOExercicio();
		try {
			return ok(views.html.padraoTreino.cadastrar.render(dao.select()));
		} catch(Exception e){
			return internalServerError("Erro ao visualizar Padrão de Treino.");
		}
	}
	
	public static Result editarView(int id){
		DAOPadraoTreino dao = new DAOPadraoTreino();
		try{
			PadraoTreino pt = new PadraoTreino();
			pt = dao.select(id);
			return ok(views.html.padraoTreino.editar.render(pt));
		}catch(Exception e){
			return internalServerError("Erro ao visualizar Padrão de Treino.");
		}
	}
	
	
	public static Result listarView(){
		DAOPadraoTreino dao = new DAOPadraoTreino();
		try {
			Set<PadraoTreino> pt = dao.select();
			return ok(views.html.padraoTreino.listar.render(pt));
		} catch (Exception e) {
			return internalServerError("Erro ao visualizar Padrão de Treino.");
		}
		
	}
	
	public static Result cadastrar(){
		Form<PadraoTreino> novoPt = formPadraoTreino.bindFromRequest();
		PadraoTreino pt = novoPt.get();
		
		pt.nome = request().getQueryString("nome");
		pt.intensidade = request().getQueryString("intensidade");
		
		int qt = Integer.parseInt(request().getQueryString("quantidadeExercicio"));
		
		for (int i = 0; i < qt; i++) {
			ExercicioPadraoTreino ept = new ExercicioPadraoTreino();
			
			ept.idExercicio = Integer.parseInt(request().getQueryString("exercicio_"+i));
			
			try {
				ept.serie = Integer.parseInt(request().getQueryString("serie"+ ept.idExercicio));				
			} catch (Exception e) {}
			
			try {
				ept.repeticao = Integer.parseInt(request().getQueryString("repeticao"+ ept.idExercicio));				
			} catch (Exception e) {}

/*			try {
				et.descanso = Integer.parseInt(request().getQueryString("descanso"+ et.idExercicio));
			} catch (Exception e) {}
*/

			pt.exercicio.add(ept);
			
			System.out.println(ept);
		}
		
		
		
		DAOPadraoTreino dao = new DAOPadraoTreino();
		try{
			dao.insert(pt);
			return listarView();
		}catch(Exception e){
			return internalServerError("Erro ao cadastrar Padrão de Treino.");
		}
	}
	
	public static Result editar(){
		Form<PadraoTreino> novoPt = formPadraoTreino.bindFromRequest();
		PadraoTreino grupo = novoPt.get();
		DAOPadraoTreino dao = new DAOPadraoTreino();
		try{
			dao.update(grupo);
			return listarView();
		}catch(Exception e){
			e.printStackTrace();
			return ok(views.html.padraoTreino.index.render("Erro ao editar Padrão de Treino."));
		}
		
	}
	
	public static Result remover(){
		Form<PadraoTreino> novoPt = formPadraoTreino.bindFromRequest();
		PadraoTreino pt = novoPt.get();

		DAOPadraoTreino dao = new DAOPadraoTreino();
		try{
			dao.delete(pt);
			return listarView();
		}catch(Exception e){
			e.printStackTrace();
			return ok(views.html.padraoTreino.index.render("Erro ao remover Padrão de Treino."));
		}
	}
	
}
